/* Hello World Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"

void app_main(void)
{
    printf("Hello world!\n");

    /* Print chip information */
    esp_chip_info_t chip_info;                                              //定义信息结构体
    esp_chip_info(&chip_info);                                              //获取芯片信息
    printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
            CONFIG_IDF_TARGET,
            chip_info.cores,                                                //核心数
            (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",            //支持的功能
            (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

    printf("silicon revision %d, ", chip_info.revision);                    //版本号

    printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),    //获取spi大小
            (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");       //确定片内/外spi

    printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size());         //获取最小可用heap大小

    for (int i = 10; i >= 0; i--) {
        printf("Restarting in %d seconds...\n", i);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
    printf("Restarting now.\n");
    fflush(stdout);                                                         //将缓冲区的内容写到屏幕。
    esp_restart();                                                          //芯片复位。
}


